/*
 * DevicesLed.c
 *
 *      Author: Honrun
 */

#include "ch32x035.h"
#include "string.h"
#include "DevicesLed.h"


void vLedInit(void)
{
    GPIO_InitTypeDef GPIO_InitStructure = {0};

    /* enable the LED GPIO clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    /* configure LED GPIO pin */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    vLedOpen(LED_CHANNEL_ALL);
}

void vLedOpen(uint32_t uiChannel)
{
    if(uiChannel & LED_CHANNEL_1)
    {
        GPIO_ResetBits(LED_1_GPIO_Port, LED_1_Pin);
    }
    if(uiChannel & LED_CHANNEL_2)
    {
        GPIO_ResetBits(LED_2_GPIO_Port, LED_2_Pin);
    }
}

void vLedClose(uint32_t uiChannel)
{
    if(uiChannel & LED_CHANNEL_1)
    {
        GPIO_SetBits(LED_1_GPIO_Port, LED_1_Pin);
    }
    if(uiChannel & LED_CHANNEL_2)
    {
        GPIO_SetBits(LED_2_GPIO_Port, LED_2_Pin);
    }
}

void vLedRevesal(uint32_t uiChannel)
{
    if(uiChannel & LED_CHANNEL_1)
    {
        LED_1_GPIO_Port->OUTDR ^= LED_1_Pin;
    }
    if(uiChannel & LED_CHANNEL_2)
    {
        LED_2_GPIO_Port->OUTDR ^= LED_2_Pin;
    }
}
